Ball game training

ABSTRACT

A method for ball game training, the method comprising steps executed by at least one computer, the steps comprising: receiving image data of a player and a ball, the image data being captured using at least two cameras, using the received image data, tracking motion of the player and motion of the ball in three dimensions, based on the tracked motions, predicting a position of the player and a trajectory of the ball, and based on the predicted position and trajectory, generating a control command for at least one ball throwing machine.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present invention is a continuation of U.S. patent application Ser.No. 15/543,225, filed Jul. 12, 2017, which is an application filed under35 U.S.C. § 371 as the United States national phase application ofInternational Application No. PCT/IB2015/050515, filed Jan. 23, 2015,each of which is hereby incorporated in their entirety including alltables, figures, and claims.

FIELD AND BACKGROUND OF THE INVENTION

The present invention relates to sport training, and more particularlybut not exclusively, to ball game training, using ball throwingmachines.

Today, many professional and amateur athletes use ball throwing machinesto practice their particular sport.

For example, tennis ball throwing machines (also referred to as ballmachines, ball projecting machines, etc.) are extremely useful practicetools for tennis players.

Typically, these machines are loaded with tennis balls and placed at anend of a tennis court which is opposite the practicing player.

Usually, the desired trajectory of the ball is set, either manually bythe player or with the aid of a remote control. Balls are then lobbed orshot out of the machine towards the player, to allow practice shots tobe hit. Such machines usually project tennis balls or other types ofballs, by utilizing pneumatic power, rotating wheels, and/or springpower, to grasp the balls and project them outwardly.

As ball throwing machines have been utilized for many years by now,there have been many improvements in throwing machine technology.

For example, higher end tennis ball throwing machines have been providedwith more ways to control the trajectory of the projected tennis balls,say in order to provide for left and right ball throwing variations, aswell as for up and down ball throwing variations.

Some of those higher end tennis ball throwing machines have beenprovided with some level of pre-programming and storing of the kind ofshots and the sequence of shots that a tennis player wishes to practicereturning.

Having been programmed that way, a ball throwing machine serves the ballshots in the pre-programmed sequence of ball shots, progressing from oneball shot to the other.

The ball throwing machine progresses from one ball shot to the other,each time the tennis player pushes a button, or rather automatically,say with time intervals that may optionally, be preset by the tennisplayer or his coach.

For example, some of the ball machines currently in use allow the user(say the tennis player or the player's coach), to adjust the timing of afiring sequence. Thus, for example, if the tennis ball machine is set ona fast speed, shots may be fired every two seconds. Similarly, if theball machine is set on a slow speed, a longer period of time will lapsebetween shots.

SUMMARY OF THE INVENTION

According to a first aspect of the present invention there is provided amethod for ball game training, the method comprising steps executed byat least one computer, the steps comprising: receiving image data of aplayer and a ball, the image data being captured using at least twocameras, using the received image data, tracking motion of the playerand motion of the ball in three dimensions, based on the trackedmotions, predicting a position of the player and a trajectory of theball, and based on the predicted position and trajectory, generating acontrol command for at least one ball throwing machine.

According to a second aspect of the present invention there is provideda system for ball game training, the system comprising: a computer, animage data receiver, implemented on the computer, configured to receiveimage data of a player and a ball, the image data being captured usingat least two cameras, a three dimensional motion tracker, incommunication with the image data receive, configured to track motion ofthe player and motion of the ball in three dimensions, using thereceived image data, a position predictor, in communication with thethree dimensional motion tracker, configured to predict a position ofthe player and a trajectory of the ball based on the tracked motions,and a control command generator, in communication with the positionpredictor, configured to generate a control command for at least oneball throwing machine based on the predicted position and trajectory.

According to a third aspect of the present invention there is provided anon-transitory computer readable medium storing computer executableinstructions for performing steps of ball game training, the stepscomprising: receiving image data of a player and a ball, the image databeing captured using at least two cameras, using the received imagedata, tracking motion of the player and motion of the ball in threedimensions, based on the tracked motions, predicting a position of theplayer and a trajectory of the ball, and based on the predicted positionand trajectory, generating a control command for at least one ballthrowing machine.

Unless otherwise defined, all technical and scientific terms used hereinhave the same meaning as commonly understood by one of ordinary skill inthe art to which this invention belongs.

The materials, methods, and examples provided herein are illustrativeonly and not intended to be limiting.

Implementation of the method and system of the present inventioninvolves performing or completing certain selected tasks or stepsmanually, automatically, or a combination thereof.

Moreover, according to actual instrumentation and equipment of preferredembodiments of the method and system of the present invention, severalselected steps could be implemented by hardware or by software on anyoperating system of any firmware or a combination thereof. For example,as hardware, selected steps of the invention could be implemented as achip or a circuit. As software, selected steps of the invention could beimplemented as a plurality of software instructions being executed by acomputer using any suitable operating system. In any case, selectedsteps of the method and system of the invention could be described asbeing performed by a data processor, such as a computing platform forexecuting a plurality of instructions.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is herein described, by way of example only, withreference to the accompanying drawings. With specific reference now tothe drawings in detail, it is stressed that the particulars shown are byway of example and for purposes of illustrative discussion of thepreferred embodiments of the present invention only, and are presentedin order to provide what is believed to be the most useful and readilyunderstood description of the principles and conceptual aspects of theinvention. The description taken with the drawings making apparent tothose skilled in the art how the several forms of the invention may beembodied in practice.

In the drawings:

FIG. 1 is a block diagram schematically illustrating a first exemplarysystem for ball game training, according to an exemplary embodiment ofthe present invention.

FIG. 2 is a block diagram schematically illustrating a second exemplarysystem for ball game training, according to an exemplary embodiment ofthe present invention.

FIG. 3 is a simplified flowchart illustrating a first method for ballgame training, according to an exemplary embodiment of the presentinvention.

FIG. 4 is a simplified flowchart illustrating a second method for ballgame training, according to an exemplary embodiment of the presentinvention.

FIG. 5 is a block diagram schematically illustrating an exemplarycomputer readable medium storing computer executable instructions forperforming steps of ball game training, according to an exemplaryembodiment of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present embodiments comprise a system and method for ball gametraining, say for tennis training of a professional or an amateur tennisplayer, using one or more ball throwing machines, cameras, and acomputer.

For example, by now, tennis ball throwing machines have become extremelyuseful practice tools widely used by professional and amateur tennisplayers.

Embodiments of the present invention are based on tracking both themotion of a player and the motion of a ball, during a training session,using a computer, and based on that tracking, controlling ball throwingmachines, by the computer, for throwing balls in a way and timedependent on the tracked motions.

Thus, according to one exemplary embodiment, there is provided a systemfor ball game training, say for tennis training, which system comprisestwo or more video cameras, one or more ball throwing machines, and acomputer.

In the exemplary embodiment, during a training session, the computerreceives image data of a player and a ball, in real time (or near realtime), as captured live by the cameras, during the session, as describedin further detail hereinbelow.

Using the received image data, the computer tracks motion of the playerand motion of the ball in three dimensions, and based on the trackedmotions, the computer predicts a position of the player and a trajectoryof the ball. For example, the computer may predict the position of theplayer a few second after the player hits the ball, and the trajectoryof the ball having been hit by the player (say a specific tennis ball'strajectory towards the end of a tennis court, opposite the player).

Based on the predicted position and trajectory, the computer generates acontrol command for at least one of the ball throwing machines, asdescribed in further detail hereinbelow.

Thus, for example, in a tennis training scenario, a tennis player runstowards a ball thrown by one of the ball throwing machines, and hits theball with a racket.

Video images of the tennis player's running and hitting are captured bythe cameras and fed as image data to the computer, which in turn, tracksboth the motion of the player and the motion of the ball—before, during,and after the player's hitting of the ball.

In the example, based on, say the velocity and direction of the ball andof the player, tennis rules, and historic data gathered on the player,the computer predicts the ball's trajectory towards a point at thetennis court's half opposite the player, and the player's position whenthe ball is supposed to hit the point.

Then, based on the predicted player's position and ball's trajectory,the computer generates a control command for one of the ball throwingmachines, to throw a ball towards the player's half of the court.

The control command instructs the ball throwing machine, to throw theball in a way (say with a velocity, direction, and spin) and time, whichdepend on the predicted position and trajectory.

In one example, the player (or another user) is allowed to select avirtual opponent (say a famous tennis player). Consequently, the controlcommand instructs the machine to throw the ball in a way in which afamous player (say Novak Djokovic) is likely to hit back a ball havingthe predicted trajectory, when the famous player's opponent runs to thepredicted position, in light of historic data gathered on the famousplayer.

Optionally, the computer may further select the ball throwing machineamong two or more ball throwing machines positioned on the court, basedon the predicted player's position and ball's trajectory, and on thehistoric data gathered on the famous player, and send the controlcommand to the selected machine.

Thus, potentially, with a system according to the exemplary embodiment,the ball throwing machines function in a way which may prove morerealistic, in light of real time performance by the player.

The principles and operation of a system and a method according to thepresent invention may be better understood with reference to thedrawings and accompanying description.

Before explaining at least one embodiment of the invention in detail, itis to be understood that the invention is not limited in its applicationto the details of construction and the arrangement of the components setforth in the following description or illustrated in the drawings.

The invention is capable of other embodiments or of being practiced orcarried out in various ways. Also, it is to be understood that thephraseology and terminology employed herein is for the purpose ofdescription and should not be regarded as limiting.

Reference is now made to FIG. 1, which is a block diagram schematicallyillustrating a first exemplary system for ball game training, accordingto an exemplary embodiment of the present invention.

A system 100 for ball game training, according to an exemplaryembodiment of the present invention, includes a computer. The computermay include a single computer, a group of computers in communicationover a network, one or more electric circuits, or any combinationthereof.

The system 100 further includes one or more additional parts, such asthe parts denoted 11-14 in FIG. 1. The additional parts may beimplemented as software, as hardware, or as a combination of hardwareand software, on the computer, as described in further detailhereinbelow.

The computer communicates with two or more video cameras, for receivingimages, say for receiving live video images of a professional or anamateur tennis player and of a tennis ball, as the player plays on atennis court, against one or more ball throwing machines. Indeed, bynow, ball throwing machines have been utilized in tennis and otherfields of sport for many years.

The system 100 includes a video image receiver 11.

The video image receiver 11 receives image data of the player and ball,as captured by the cameras, in real time or in near real time—say videostreams captured live by each one of the cameras during a trainingsession, and fed to the video image receiver 11 in real time or in nearreal time, as described in further detail hereinbelow.

Optionally, the video image receiver 11 further records the receivedimage data, say the video streams, in a database.

The system 100 further includes a three dimensional (3D) motion tracker12, in communication with the video image receiver 11.

The three dimensional (3D) motion tracker 12 tracks motion of the playerand motion of the ball in three dimensions, using the image datareceived by the video image receiver 11, as described in further detailhereinbelow.

Optionally, the 3D motion tracker 12 further tracks the motion of theone or more ball throwing machines, using the image data received by thevideo image receiver 11, say in the same way which the 3D motion tracker12 uses for tracking the motions of the player and ball, or in anotherway, as described in further detail hereinbelow.

Optionally, for tracking the motion of the player and the motion of theball in three dimensions, the 3D motion tracker 12 generates a threedimensional (3D) space model of a constrained environment in which thetraining of the player takes place. Thus, for example, the 3D spacemodel may map the constrained environment of a tennis court in use bythe player, in three geographic coordinates, as known in the art.

In one example, the 3D motion tracker 12 generates the 3D space modelthrough stereoscopic analysis of video streams received simultaneouslyby the video image receiver 11 from the two or more cameras, or throughany other, known in the art 3D modeling technique.

In the example, the two (or more) cameras continuously capture images ofthe constrained environment (i.e. of the court, player, ball, andsurroundings) in image data—say as video streams, and feed the imagedata to the video image receiver 11

Based on the continuous feed of the video streams, the 3D motion tracker12 updates the 3D space model, and uses the thus dynamically updated 3Dspace model, to track the motions of the player and ball.

Thus, in one example, the 3D motion tracker 12 tracks a round or ovalimage of the ball and a round or oval image of player' head in the 3Dspace model based on the image data received simultaneously by the videoimage receiver 11 from the two or more cameras. The 3D motion tracker 12keeps track of each round or oval image's location, during a session oftraining the player. Typically, the round or oval image of the balldiffers from the round or oval image of the player, in size or shape.

For example, the three dimensional (3D) motion tracker 12 may track themotions, using images of the tennis player when the player runs on atennis court towards a ball thrown by one of the ball throwing machines,and hits the ball with a tennis racket—as captured in the image datareceived by the video image receiver 11.

In the example, when the player runs to hit the ball thrown by the ballthrowing machine, the tracked motions include the motion of the playerbefore, during, and after the player's hitting of the ball, as well asthe ball's motion before and after being hit, as described in furtherdetail hereinbelow.

The system 100 further includes a position predictor 13, incommunication with the 3D motion tracker 12.

The position predictor 13 predicts a position of the player and atrajectory of the ball based on the motions tracked by the 3D motiontracker 12, as described in further detail hereinbelow.

Optionally, the position predictor 13 predicts the position of theplayer and the trajectory of the ball, based on one or more parameters.The parameters may include, but are not limited to: velocity anddirection of the ball and of the player, spin of the ball, sport (saytennis) rules, automatic identification of certain events based on sportrules, wind conditions, historic data gathered for the player, etc., orany combination thereof, as described in further detail hereinbelow.

In one example, based on the tracked motions of the player and ball, theposition predictor 13 predicts a tennis player's position two secondsafter the player hits the ball, and the ball's trajectory over a tenniscourt's half opposite the player (i.e. the half which would be used by areal opponent), after being hit by the tennis player.

The position predictor 13 may also take historic data gathered on thetennis player, into consideration, for predicting the player's position,say statistical data gathered during the player's previous trainingsessions. The statistical data may indicate, for example, the player'spreferences over different areas of the tennis court—say a preferencefor areas near one of court's corners.

The system 100 further includes a control command generator 14, incommunication with the position predictor 13.

The control command generator 14 generates a control command for one ormore ball throwing machine, based on the predicted player's position andball's trajectory.

The control command instructs the ball throwing machine, to throw theball in a way say with initial velocity, direction, and spin), time,etc., which depend on the position and trajectory predicted by theposition predictor 13.

In a first example, the control command generator 14 calculates the wayfor throwing the ball such that the thrown ball's trajectory expectedwhen the ball is thrown that way, extends from the ball throwing machineinto an area near the net, just opposite the predicted position of theplayer. Then, the control command generator 14 specifies the selectedway (say the initial velocity and direction to be given to the ball whenbeing thrown) in the control command.

Optionally, for calculating the way for throwing the ball, the controlcommand generator 14 further takes the ball throwing machine's positioninto consideration, say using location data received from the 3D motiontracker 12 based on the tracking of the ball throwing machine's motion,as described in further detail hereinabove.

Optionally, the player (or another user say the player's coach) isallowed to select a virtual opponent (say a famous tennis player orsimply, another player previously trained using the system 100).

Consequently, the generated control command instructs the ball throwingmachine to throw the ball in a way in which the selected opponent (saythe famous player) is likely to hit a ball having the predictedtrajectory, when the famous player's opponent runs to the predictedposition, in light of historic data gathered on the opponent.

Thus, in one example, the control command generator 14 selects theball's velocity, direction, and/or spin based on past performance by thefamous player when hitting a ball with a parabolic trajectory similar tothe ball's predicted trajectory, say a trajectory which extends into adistance of less than one meter from the net.

For example, when Bjorn Borg is selected as a virtual opponent, thecontrol command generator 14 may select a spin which when being appliedto the thrown ball, the ball flies in a way which resembles the wayBjorn Borg would hit hack a ball served with a trajectory similar to thepredicted trajectory, say with Topspin.

Indeed, Topspin is typical of Bjorn Borg's play when hitting back a ballnear the net. Topspin is a ball's spin with which the ball rotatesforwards as it moves. Topspin on a ball propelled through the airimparts a downward force that causes the ball to drop, due to the ball'sinteraction with the air.

Optionally, the control command generator 14 further generates thecontrol command based on one or more drill patterns predefined by a user(say the player's coach), operator, programmer or administrator of thesystem 100, as described in further detail hereinbelow.

For example, the user may be allowed to customize the system 100, usinga GUI (Graphical User Interface) made of one or more menu pages, andthereby define to the system 100 a drill pattern with which a tennisplayer's net game is improved, by forcing the player to hit the ballfrom areas close to the net.

Consequently, when a user chooses the predefined drill pattern, sayusing one of the menu pages, the control command generator 14 generatescontrol commands which instruct the ball throwing machine to throw theball in a way which sends the ball into a trajectory which ends close tothe net. Optionally, for generating the control commands, the controlcommand generator 14 takes into consideration the player's predictedposition, such that the trajectory of ball ends close to the net, at adistance from the predicted position, which distance grows from onecommand to the next.

Optionally, after the user (say coach) chooses the predefined drillpattern (or rather after the drill pattern is preselected automatically,say by the control command generator 14), the control command generator14 keeps generating each control command based on the same, selecteddrill pattern. The control command generator 14 keeps issuing controlcommands based on the same selected drill pattern, until a goalpredefined by a user is achieved by the player. The goal may bepredefined by a user (say the player's coach), operator, programmer oradministrator of the system 100, as described in further detailhereinbelow.

In one example, the control command generator 14 verifies that theplayer has managed to achieve the predefined goal, say to hit the ballnear the net for twenty times in a row, using motion tracking datagenerated by the 3D motion tracker 12.

In the example, each time the player hits the ball within a distance ofless then one meter away from the net, the motion tracking dataindicates that the ball thrown is successfully hit by the player, andcounts the hit as one of those twenty times, as described in furtherdetail hereinbelow. Optionally, the system 100 further includes aspeaker, and the control command generator 14 notifies the player thatthe ball is successfully hit by the player, and that therefore, the hitcounts towards achieving the goal of those twenty times.

Optionally, the system 100 further includes a scoring manager, incommunication with the 3D motion tracker 12.

The scoring manager uses rule games (say tennis rules) input by thesystem's 100 administrator, operator, user, programmer, etc. (say usinga GUI interface implemented by the computer), and tracking datagenerated by the 3D motion tracker 12, for detecting event predefined inthe input rules (say a Tennis Out Event). Based on the detected event,the scoring manager updates a score of the player or of the virtualopponent, say according to the tennis rules, as known in the art.

Optionally, the control command generator 14, position predictor 13, orboth, further use pattern analysis and what-if simulation, for thetracking, or for the predicting, as described in further detailhereinbelow.

Optionally, the system 100 further includes one ball throwing machine.Alternatively, the system 100 further includes two or more ball throwingmachines, as described in further detail hereinbelow.

Optionally, the system 100 further includes a ball throwing machineselector (not shown), in communication with the control commandgenerator 14, position predictor 13, or both.

The ball throwing machine selector selects one ball throwing machineamong two (or more) ball throwing machines deployed at differentpositions (say at different positions on the tennis court on which theplayer is trained), as a destination for the generated control command.

Consequently, the control command generator 14 sends the control commandto the machine selected by the ball throwing machine selector.

Optionally, the ball throwing machine selector selects the ball throwingmachine among the two or more ball throwing machines, based on theplayer's position and ball's trajectory, as predicted by the positionpredictor 13.

Optionally, the ball throwing machine selector selects the ball throwingmachine based on the predicted position of the player and trajectory ofthe ball as well as on the positions of the ball throwing machines.

Optionally, the ball throwing machine selector further uses locationdata generated by the 3D motion tracker 12, as the 3D motion tracker 12tracks the motions of one or more of the ball throwing machines, forselecting the machine, as described in further detail hereinbelow.

Optionally, the ball throwing machine selector additionally oralternatively, uses historic data previously gathered on the selectedvirtual opponent (say the famous player), for selecting the ballthrowing machine.

In one example, the ball throwing machine selector further uses historicstatistical data previously input to the system 100 (say into adedicated computer database implemented on the computer), say by anadministrator of the system 100.

In the example, the historic statistical data indicates that the famousplayer has a preference for tennis net play, or rather that the famousplayer has a tendency to hit back a ball from specific areas of thecourt, as described in further detail hereinbelow.

Optionally, the ball throwing machine is movable around the court, sayon a rail (say a rail which runs along the court's side opposite theplayer) on which the machine is movably mounted, or simply on wheels,using an engine of the machine. The control command generator 14 mayfurther generate a control command for the machine to move over, to adestined position selected by the control command generator 14 based onthe predicted position and trajectory, as described in further detailhereinbelow.

Optionally, the ball throwing machine further has a mechanical arm,movable by an engine installed on the machine, for hitting a ball (say amechanical arm shaped like or connected to a tennis racket). The controlcommand generator 14 may further generate a control command for themachine to hit the ball having the predicted trajectory, with themechanical arm, as described in farther detail hereinbelow.

Optionally, the system 100 further comprises a calibrator (not shown),say a calibrator in communication with the 3D motion tracker 12, thevideo image receiver 11, or both.

The calibrator identifies location of a predefined object present in anarea used for the training (say of one or more white border lines of atennis court), in the received image data.

Optionally, for carrying out the calibration, the calibrator divides thecourt as captured by the cameras in the image data, into a gridrepresentative of the court's layout, and checks each junction in thegrid for a deviation from the grid.

For example, the calibrator may use tennis court's boundary parts, asidentified in the image data, for estimating all boundary lines of thecourt, divide the court, as captured in the image data, with a gridrepresentative of the boundary lines of the whole court, and detectareas that are clearly out of those boundaries.

Optionally, based on detected deviation from the grid, the calibratorautomatically issues control commands to a controller (say a dedicatedcomputer) connected to the cameras, to re-align the cameras' direction,tilt angle, etc., as described in further detail hereinbelow.Preferably, the deviation from the grid is detected in real (or nearreal) time, and the calibrator issues the control commands promptlyafter the detection, thus improving the quality of the image datareceived by the image data receiver 11 from the cameras, during thetraining session.

Optionally, based on the detected deviation, the calibrator instructsthe 3D motion tracker 12 to update the three dimensional (3D) spacemodel of the constrained environment (say of the court). Consequently,the 3D motion tracker 12 removes parts which are outside the court andare not relevant for tracking the motions of the player and ball, fromthe 3D space model, or changes an orientation of the 3D space model, asdescribed in further detail hereinbelow.

Thus, based on the identified location of the predefined object (say aborderline of the tennis court) in the image data, the calibrator mayimprove the tracking of the motions, the capturing of the image data bythe cameras, or both the tracking and the capturing.

Optionally, the system 100 further includes a pointer (not shown), incommunication with the control command generator 14.

Optionally, the pointer points a position to the player, using one ormore light sources, as described in further detail hereinbelow.

Optionally, the pointer rather points the position to the player, usinga computing device wearable by the player. The computing device may bein wireless communication with the computer. For example, the pointermay use a wireless data link based on Bluetooth® technology, to pointthe position to the player, by presenting the image on a display of aneyewear or a smart helmet of the sort used for virtual reality andaugmented reality applications, as known in the art.

Optionally, the pointer points a point for the player to hit, and basedon the tacking of the motion of the ball by the 3D motion tracker 13,the command control generator 14 notifies the player on the results ofthe player's attempt to hit the point with the ball, say using one ormore speakers, as described in further detail hereinbelow.

Optionally, the pointer points a simulated position of a virtualopponent to the player—say of the famous player selected as a virtualopponent, as described in further detail hereinbelow.

In one example, the system 100 includes one or more light sources. Eachof the light sources is installed on a respective position of the courtand is connected to the computer on which the pointer is implemented,and the pointer controls the light source directly from the computer, asdescribed in further detail hereinabove.

In another example, each light source is installed on a respective oneof the ball throwing machines, and the pointer sends a control commandto a selected one of the ball throwing machine, for pointing thesimulated position, using the light source, as described in furtherdetail hereinbelow.

Optionally, the pointer uses the light sources, to project an image ofthe virtual opponent—say a real (i.e. three dimensional) hologram of thefamous player, or rather a two dimensional image of the famous player—tothe player, as the player trains on the court, for pointing a simulatedposition of the virtual opponent to the player.

Optionally, the projection of the real hologram involves one ofcurrently used techniques for projecting real (i.e. three dimensional)holograms or two dimensional images.

For example, the system 100 may include an array made of one or morelaser beam sources (say helium-neon lasers), lenses, mirrors, prisms,beam splitters, etc., or any combination thereof, as known in the art.The array's elements may be installed at different positions of theconstrained environment, on the ball throwing machines, etc., or anycombination thereof.

Thus, in one example, when the player hits the ball with a trajectorypredicted by the position predictor 13 to extend towards a point closeto a specific one of several ball throwing machines deployed on thecourt, the pointer projects a hologram of the virtual opponent (say ofNovak Djokovic) standing next to the specific ball throwing machine.

Similarly, in another example, the position predictor 13 predicts acertain position of the player when the player waits to be served aball. Consequently, an image (say a hologram) of the virtual opponent(say the famous player) serving a ball is projected in front of a ballthrowing machine instructed to throw a ball by the control commandgenerator 14 generated control command. The virtual opponent's image isprojected, say for a period of a few seconds before the ball throwingmachine actually throws the ball.

Optionally, a user (say a coach) is allowed to remotely control thepointer, for pointing a simulated position of a virtual opponent to theplayer, say for projecting and moving an image of the virtual opponentaround the court, thus allowing the user to manually intervene in atraining session of the player using the system 100.

Thus, for example, by moving the image around the court, the user (saycoach) may encourage the player to exercise certain play styles, say anet play, a variety of types of ball shots (i.e. different ways ofhitting the ball), etc.

Optionally, the control command generator 14 generates the controlcommands based on the position pointed by the user (say the coach), sayby moving the hologram to a specific position. For example, the controlcommand generator 14 may generate a control command which instructs oneof the ball throwing machines, to throw a ball in a direction, spin, andvelocity, which are likely to send the ball into a trajectory whichpasses exactly over the position pointed by the user.

Optionally, the control command generator 14 further bases thegeneration of the control command on motion of another playerpreselected as an opponent to the player and of a ball used by the otherplayer, as tracked in a location remote from the ball throwing machine,during the training.

In one example, a second system similar to the first system 100, whichincludes components similar to the components 11-14 of the first system,may be installed at a remote tennis court in use by the other tennisplayer.

In the example, the second system communicates tracking data generatedby the second system's component similar to the 3D motion tracker 12 ofthe first system 100, from tracking the motion of the other player andball in use by the other player, to the control command generator 14 ofthe first system, in real time or near real time.

Consequently, the control command generator 14 may further base thegeneration of the control command on the tracking data thus communicatedby the second system in real time or near real time.

Optionally, the control command generator 14 further generates thecontrol command based on motion of an avatar in a video game, or a videogame based GUI, as used by a user of the video game or GUI, during atraining of the player, as described in further detail hereinbelow.

In one example, the computer game is a part of a GUI of art applicationwhich allows a user to remotely control the system 100, thus providingfor a remote control functionality based on gamification, as known inthe art.

For example, the system 100 may further include a server (say a webserver), on which a tennis computer game may be played by a user remotefrom the server, say using an internet web browser installed on theremote user's computer (say a tablet computer or a cellular phone).

The computer game of the example is implemented using a dedicatedcomputer program, which program allows the user to control an avatar ofa tennis player who plays against a second avatar, in the computer game.The motion of first avatar, controlled by the user during the game, istracked by the computer program, and is communicated to the controlcommand generator 14, in real time, say in a data file.

Consequently, the control command generator 14 further bases thegeneration of the control command on the tracking data communicated inthe data file. Thus, in one example, the player's coach may use thecomputer game, to remotely intervene in the training session, and guidethe player through the training session, say from the coach's home.

Optionally, the system 100 further includes a video game contentgenerator, configured to generate video game content based on thetracking by the 3D motion tracker 12 and predicting by the positionpredictor 13, as described in further detail hereinbelow.

In a first example, the video game content generator is implemented bythe position predictor 13 and the computer program which implements thecomputer game on the web server.

In the first example, the position predictor 13 communicates thepredicted player's position and ball's trajectory to the program whichimplements the computer game on the server. The computer program inturn, moves the second avatar in a motion based at least partially, onthe predicted player's position and ball's trajectory.

In a second example, the video game content generator is implemented bythe 3D motion tracker 12, the computer program which implements thecomputer game, and a database on which the tracked motions of the playerand ball are recorded during a training session.

In the second example, during the training session, the player's motionand ball's motion are tracked by the 3D motion tracker 12. The trackedmotions and positions from which the ball is thrown at the player, perthe control commands generated by the control command generator 14, arerecorded in a database, say by the 3D motion tracker 12.

Consequently, in the second example, after the training session, theprogram which implements the computer game, generates game content whichgraphically presents the tracked motion, in the computer game, using thedatabase, as described in further detail hereinbelow. Optionally, forrepresenting the tracked motions of the player, ball, virtual opponent,or any combination thereof, through the generation of the game content,the program uses a three dimensional (3D) graphical engine, as known inthe art.

Optionally, the system further includes one or more microphones and avoice recognition component implemented on the computer, say as asoftware component in communication with the control command generator14. Consequently, the control commands generated by the control commandgenerator 14, are further based on voice commands received from theplayer, and picked by the microphones, during a training session.

The voice commands may include commands such as: “Start session”, “stopsession”, “start drill number seven”, “Start drill pattern of beginnerslevel”, etc., or any combination thereof.

Optionally, the system 100 further includes a hit identifier (notshown), in communication with the 3D motion tracker 12.

Using tracking data pertaining to the ball, as generated by the 3Dmotion tracker 12, the hit identifier identifies if after being hit bythe player, the ball hits a specific position, say a position pointed tothe player by the player's coach, using a light source, as described infurther detail hereinabove.

Optionally, the system 100 further includes two or more cameras. Atleast two of the cameras are used to capture images of the closedenvironment and generate the image data—say live video streams of theconstrained environment of the court in which the player and ball movearound, as described in further detail hereinabove.

Optionally, at least one of the cameras is a Pan-Tilt-Zoom (PTZ) camera,and the system 100 further includes a camera controller, incommunication with the 3D motion tracker 12, the position predictor 13or both the motion tracker 12 and the position predictor 13, asdescribed in further detail hereinbelow.

The camera controller controls the one or more PTZ cameras based on themotions of the player and ball as tracked by the 3D motion tracker 12,on the player's position and ball's trajectory as predicted by theposition predictor 13, or on both.

Optionally, the system 100 further includes an analyzer (not shown), incommunication with the position predictor 13.

Upon operation by a user of the system 100, say the player's coach, andafter one or more training sessions, the analyzer may carry outbio-mechanical analysis, technical analysis, tactical analysis, anotherform of analysis, or any combination thereof, on the motions of theplayer and ball, through known in art analysis techniques.

Optionally, the system 100 further includes a logger which logs themotions tracked during the training session, in a database, and abriefing module which is operable by a user of the system 100, say theplayer's coach, for presenting tracked motions of the player and hall ona screen of the computer. Consequently, the user is allowed to analyzethe player's performance, explain mistakes, etc., as known in the art.Optionally, the briefing module further uses image data received andrecorded (say in a database) by the image data receiver 11, as describedin further detail hereinbelow.

Optionally, the briefing module combines data recorded in the system's100 one more databases, for review, analysis, what-if scenarios (saythat the player has a higher chance to hit the ball if the playerimproves his net play skills, change his serving positions), etc., asknown the art.

In one example, the briefing module generates and presents on thecomputer's screen, a video clip. Optionally, the briefing modulegenerates the video clip, by overlaying a part of the image data (sayvideo streams) with animated images of the player, virtual opponent, orboth, as known in the art. Alternatively, the video clip is rather basedon the computer game content, as described in further detailhereinabove.

Reference is now made to FIG. 2, which is a block diagram schematicallyillustrating a second exemplary system for ball game training, accordingto an exemplary embodiment of the present invention.

A second system, according to an exemplary embodiment of the presentinvention, includes two or more cameras 21 deployed at locations whichenable to cover a three dimensional space of a constrained environment,such as a real professional tennis court, or another court in use forpracticing tennis or another sport.

The system further includes one or more ball throwing machines 22deployed at positions around the court, and a computer 23.

With the system, a player 24 (say a professional or amateur tennisplayer), may be trained, through a training session in which the ballmachine 22 is controlled by the computer 23, for throwing balls 25 in away similar to a real human opponent's way of serving or hitting backthe balls. Consequently, the player may potentially, be given a morerealistic training experience.

The computer 23 implements one or more the parts of system 100, forcontrolling the action, motion, etc., of the ball machine 22, asdescribed in further detail hereinabove, and as illustrated using FIG.1.

Optionally, the system further includes a remote computer 26, such as amobile communication device (say a smart phone), a laptop computer, atablet computer, etc., as know in the art.

The remote computer 26 communicates with the system's computer 23 over awide area network (WAN) or a local area network (LAN) network 27, suchas the Internet or any other data communications link or network, sayfor remote controlling of the system, say using an avatar in a computergame, etc., as described in further detail hereinabove.

Optionally, the system further includes one or more PTZ video cameras 28for capturing and recording of the player's 24 and ball's 25 motions,say by allowing operations such as zooming in on the human player's 24motion, say for enabling biomechanical analysis of the motions, etc., asdescribed in further detail hereinabove.

In one example, the system includes two pairs of stereo cameras 21 inuse for capturing the video streams of the player 24 and ball 25. Thevideo streams are fed to the computer 23 and used for tracking themotions of the player 24 and ball 25, say by the 3D motion tracker 12,as described in further detail hereinabove.

In the example, the system further includes two PTZ cameras 28 deployedat opposite positions, i.e. at opposite sides of the court, so as tocover the constrained environment of the court from both sides.

Optionally, the system further includes a lights source 29 (say a laserprojector) controlled by the computer 23, say by the pointer of system100, for pointing a position to the player 24, say using an image of avirtual opponent, as described in further detail hereinabove.

Reference is now made to FIG. 3, which is a simplified flowchartillustrating a first method for ball game training, according to anexemplary embodiment of the present invention.

A first exemplary method for ball game training, according to anexemplary embodiment of the present invention, may be executed by acomputer. The computer may include a single computer, a group ofcomputers in communication over a network, one or more electriccircuits, or any combination thereof.

In one example, for carrying out the first exemplary method, thecomputer communicates with the two or more cameras, and the one or moreball throwing machines of system 100, say through an intranet network, alocal area network, another network, or any combination thereof, asdescribed in further detail hereinabove.

In the method, there is received 31 image data of the player and ball,as captured by the cameras, in real (or near real) time—say videostreams captured live by the cameras during a training session, and fedto the video image receiver 11, in real time or in near real time, asdescribed in further detail hereinabove.

Then, there are tracked 32, motion (i.e. a change in spatial location)of the player and motion of the ball, in three dimensions (3D), usingthe received 31 image data, say by the three dimensional (3D) motiontracker 12, as described in further detail hereinabove.

Optionally, there are further tracked 32 the motions of the one or morehall throwing machines, using the received 31 image data, say in a sameway as used for tracking 32 the motions of the player and ball.

Optionally, the tracking 32 of the machines' motions is, additionally oralternatively, based on location information generated by GPS (GlobalPositioning System) receivers or Differential UPS receivers, installedon the ball throwing machines, and is communicated (say wirelessly) tothe computer, as known in the art.

Optionally, for tracking 32 the motion of the player and the motion ofthe ball in three dimensions, there is generated a three dimensional(3D) space model of a constrained environment in which the training ofthe player takes place, say a three dimensional space of a tennis courtin use by the player.

In one example, the 3D space model is generated through stereoscopicanalysis of video streams received 31 simultaneously from the two ormore cameras, or through any other, known in the art 3D modelingtechnique.

In the example, the two (or more) cameras continuously capture images ofthe constrained environment (i.e. of the court, player, ball, andsurroundings) in image data—say as video streams, and feed the imagedata to the computer on which the first method is implemented, say tothe video image receiver 11.

Based on the continuous feed of the video streams, the 3D space modelmay be continuously updated, and the thus dynamically updated 3D spacemodel, is used to track 32 the motions of the player and ball.

Thus, in one example, there are tracked 32 a round or oval image of theball and a round or oval image of player' head in the 3D space modelbased on the image data received 31 simultaneously from the two or morecameras. Consequently, during each session of the player's training,each round or oval image's location is kept track 32 of. Typically, theround or oval image of the ball differs from the round or oval image ofthe player, in size or shape.

In one example, the motions are tracked 32 from images of the tennisplayer, captured as the player runs on a tennis court towards a ballthrown by one of the ball throwing machines, and hits the ball with atennis racket—as captured in the received 31 image data.

Thus, for example, when the player runs to hit a ball thrown by the ballthrowing machine, the tracked 32 motions may cover the motion of theplayer before, during, and after the player's hitting of the ball, aswell as the motion of the before and after being hit, as described infurther detail hereinbelow.

Next, there are predicted 33 a position of the player and a trajectoryof the ball based on the tracked 32 motions, say by the positionpredictor 13, as described in further detail hereinabove.

Optionally, the position of the player and the trajectory of the ballare predicted 33 based on one or more parameters. The parameters mayinclude, but are not limited to: velocity and direction of the ball andof the player, spin of the ball, sport (say tennis) rules, automaticidentification of certain events based on sport rules, wind conditions,historic data gathered on the player, etc., or any combination thereof,as described in further detail hereinabove.

For example, based on the tracked 32 motions of the player and ball,there may be predicted 33 a tennis player's position two seconds afterthe tennis player hits the ball, and the ball's trajectory over a tenniscourt's half opposite the player (i.e. the tennis court part which wouldbe used by a real opponent), after the ball is hit by the player.

For predicting 33 the player's position, there may also be taken intoconsideration historic data gathered on the tennis player, saystatistical data gathered through previous training sessions of theplayer. In one example, the statistical data indicates the player'spreferences over different areas of the tennis court say a preferencefor areas near one of the court's corners.

Next, there is generated 34 a control command for one or more ballthrowing machines, based on the predicted 33 player's position andball's trajectory, say by the control command generator 14, as describedin further detail hereinabove.

The control command instructs the ball throwing machine, to throw theball in a way (say with initial velocity, direction, and spin), time,etc., which depend on the predicted 33 position and trajectory, asdescribed in further detail hereinabove.

In a first example, the way for throwing the ball is calculated (say bythe control command generator 14) such that the ball's trajectoryexpected when the ball is thrown that way, extends from the ballthrowing machine into an area near the net, just opposite the predicted33 position of the player. Then, the calculated way (say the initialvelocity and direction to be given to the ball when being thrown) isspecified in the generated 34 control command.

Optionally, the location of the ball throwing machine is also taken intoconsideration, for calculating the way for throwing the ball, say usinglocation data received from the 3D motion tracker 12 based on a tracking32 of the ball throwing machine's location, as described in furtherdetail hereinabove.

Optionally, in the method, the player (or another user—say the player'scoach) is allowed to select a virtual opponent (say a famous tennisplayer or simply, another player previously trained, say using thesystem 100 of FIG. 11).

Consequently, the generated 34 control command instructs the ballthrowing machine to throw the ball in a way in which the selectedopponent (say the famous player) is likely to hit a ball having thepredicted trajectory, towards a player who stands at the predictedposition, in light of historic data gathered on the opponent.

Thus, in one example, the velocity, direction, or spin of ball iscalculated based on past performance by the famous player when hitting aball with a parabolic trajectory similar to the ball's predictedtrajectory, say a trajectory which extends into a distance of not morethan one meter away from the net.

For example, when Bjorn Borg is selected as a virtual opponent, theremay be selected a spin which when being applied to the thrown ball, theball flies in a way which resembles the way Bjorn Borg would hit back aball served with a trajectory similar to the predicted 33 trajectory,say with Topspin.

Indeed, Topspin is typical of Bjorn Borg's play when hitting hack a ballnear the net. Topspin is a ball's spin with which the ball rotatesforwards as it moves. Topspin on a ball propelled through the airimparts a downward force that causes the ball to drop, due to the ball'sinteraction with the air.

Optionally, the generation 34 of the control command is further based onone or more drill patterns predefined by a user (say the player's coach,an operator, programmer or administrator of the system 100 of FIG. 1,etc.), as described in further detail hereinabove.

For example, the user may be allowed to customize the system 100, usinga GUI (Graphical User Interface) made of one or more menu pages, andthereby to define to the system 100 one or more drill patterns withwhich a tennis player's net game ay be improved, by forcing the playerto hit the ball from areas close to the net.

Consequently, when a user chooses the predefined drill pattern, sayusing one of the GUI menu pages, the generated 34 control commandinstructs the ball throwing machine, to throw the ball in a way whichsends the ball into a trajectory which ends close to the net, on theplayer's half of the court.

Consequently, at this or a later stage, a user (say a player or coach)is allowed to select a drill patterns amongst the predefined drillpatterns. Alternatively, the drill pattern may be preselectedautomatically, for the user, say by the control command generator 14.

Optionally, after the user selects the drill patterns (or rather afterthe drill patterns is preselected automatically), each control commandis generated 34 based on the same selected drill pattern, until a goalpredefined by a user is achieved by the player.

Thus, in one example, there is verified that the player has managed toachieve the predefined goal, say to hit the ball near the net for twentytimes in a row, say using motion tracking 32 data generated by the 3Dmotion tracker 12.

In the example, each time the player hits the ball within a distance ofless then one meter away from the net, the motion tracking dataindicates that the ball thrown is successfully hit by the player, andthe hit is counted as one of those twenty times, as described in furtherdetail hereinabove.

In another example, the player is asked to hit a specific point on thecourt, by pointing the specific point's location to the player, sayusing the pointer and light source, as described in further detailhereinabove. Then, there is verified that the player manages to hit thepoint with the ball, say using motion tracking 32 data generated by the3D motion tracker 12, as described in further detail hereinabove.

Optionally, each drill pattern is classified into a level (say by theadministrator, using the GUI), and the player chooses a level or ratheris classified automatically to the level, say by the control commandgenerator 14 based on past performance. For example, a new player mayinitially be classified into a beginners level, and based onperformance—say achievement of the goals, be promoted to a higher level.Consequently, the selection of the drill patterns is at least partiallybased on the levels of the player and of predefined drill patterns.

Optionally, rule games (say tennis rules) are input by an administrator,operator, user, programmer, etc. as described in further detailhereinabove. Then, based on the tracking 32, there is detected an eventpredefined in the input rules (say an Out Event). Consequently, based onthe detected event, there is updated a score of the player or of thevirtual opponent, say according to the tennis rules, as known in theart. Thus, the method may further provide for referee like and scoremanagement functionality, as described in further detail hereinabove.

Optionally, the tracking 32, predicting 33, or both, are further basedon pattern analysis and what-if simulation.

Thus, in one example, the predicting 32 may be based on statistical datapreviously gathered on the player, which statistical data shows thatwhen the ball has a relatively flat trajectory, the player tends toapproach the net, or that the player has preferences for certain partsof the court.

Optionally, the method further includes selecting one machine among two(or more) ball throwing machines deployed at different positions (say atdifferent positions on the tennis court), as a destination for thegenerated 34 control command, say by the ball throwing machine selector,as described in further detail hereinabove.

Consequently, the control command is sent to the selected machine, sayby the control command generator 14.

The selection of the ball throwing machine may be based on the predicted33 player's position and ball's trajectory, on the tracked 32 positionsof the ball throwing machines, or on both.

Optionally, the selection of the ball throwing machine is further basedon location data generated by the 3D motion tracker 12, as the 3D motiontracker 12 tracks the motions of one or more of the ball throwingmachines, as described in further detail hereinabove.

Optionally, the selection of the ball throwing machine is additionallyor alternatively, based on historic data gathered on the famous player.

In one example, there is further used historic statistical datapreviously input to the system 100 (say into a dedicated computerdatabase implemented on the computer), say by an administrator of thesystem 100. In the example, the historic statistical data indicates thatthe famous player has a preference for tennis net play, or rather thatthe famous player has a tendency to hit hack a ball from specific areasof the court, as described in further detail hereinabove.

Optionally, the ball throwing machine is movable around the court—say ona rail on which the machine is movably mounted or simply on wheels,using an engine Of the machine. Consequently, the method may furtherinclude a generation 34 of a control command for the machine to moveover, to a selected destined position.

Optionally, the destined position is selected by the control commandgenerator 14 based on the predicted 33 position and trajectory, on thehistoric data gathered on the famous player (say on the famous player'sfavorite ball serving positions—thus simulating the famous player's playstyle), etc., as described in further detail hereinabove.

Optionally, the ball throwing machine further has a mechanical arm,movable by an engine installed on the machine, for hitting a ball (say amechanical arm shared like or connected to a tennis racket).Consequently, the method may further include a generation 34 of acontrol command for the machine to hit the ball having the predictedtrajectory, with the mechanical arm, as described in further detailhereinabove.

Optionally, the method further includes a step of calibration, say bythe calibrator, as described in further detail hereinabove.

The calibration may include, for example, identifying location of apredefined object present in an area used for the training—say of one ormore white border lines of a tennis court, in the received 31 imagedata.

Optionally, for carrying out the calibration, the court, as captured bythe cameras in the image data, is divided into a grid representative ofthe court's layout, and each junction in the grid is checked for adeviation from the grid.

In one example, the calibrator may use a tennis court's white boundarylines part, as captured in the image data, for estimating all boundarylines of the court, divide the court, as captured in the image data,with a grid representative of the boundary lines of the whole court, anddetect areas that are clearly out of those boundaries.

Consequently, there may be automatically issued control commands to acontroller (say a dedicated computer) connected to the cameras, tore-align the cameras' direction, tilt angle, etc., say by the calibratorand based on the identified location of the object and detecteddeviation, as described in further detail hereinabove. Preferably, thedeviation from the grid is detected in real (or near real) time, and thecontrol commands are issued promptly after the detection, thus improvingthe quality of the received 31 image data, during the training session.

Optionally, based the detection of the areas that are clearly out ofthose boundaries, there may be updated the three dimensional (3D) spacemodel of the constrained environment in which the training of the playertakes place, say by the 3D motion tracker 12. For example, based on thedetection, there may be removed from the 3D model, the parts which areoutside the court and are thus not relevant for tracking 32 the motionsof the player and ball. Additionally or alternatively, there may bechanged an orientation of the 3D space model, as described in furtherdetail hereinbelow.

Thus, based on the identified location of the predefined object (say aborderline of the tennis court) in the image data, there may be improvedthe tracking 32 of the motions, the capturing of the image data by thecameras, or both the tracking 32 and the capturing.

Optionally, the method further includes a step of pointing a position tothe player, say by the pointer, and using one or more light sources (saya laser beam projector) or rather using a computing device wearable bythe player (say an eyewear or a smart helmet), as described in furtherdetail hereinabove.

In one example, there are used one or more light sources. In theexample, each one of the light sources is installed on a respectiveposition of the court, is connected to the computer on which the methodis implemented, and is controlled directly from the computer.

In another example, each one of the light sources is installed on arespective one of the ball throwing machines, and control commandsgenerated 34 on the computer are sent to the ball throwing machine, forpointing the simulated position, using the light source.

Optionally, using the light sources, there is projected an image of thevirtual opponent—say a real (i.e. three dimensional) hologram of thefamous player, or a two dimensional image of the famous player—to theplayer, as the player trains on the court, say for pointing a simulatedposition of the virtual opponent to the player.

Optionally, the projection of the image involves one of currently usedtechniques for projecting real (i.e. three dimensional) holograms or twodimensional images.

In one example, the projection is carried out using an array made of oneor more laser beam sources (say helium-neon lasers), lenses, mirrors,prisms, beam splitters, etc., or any combination thereof, as known inthe art. The array's elements may be installed at different positions ofthe constrained environment, on the ball throwing machines, etc., or anycombination thereof.

Thus, in one example, when the player hits the ball with a trajectorypredicted 33 to extend towards a point close to a specific one ofseveral ball throwing machines deployed on the court, there is projectedin image of the virtual opponent (say of Novak Djokovic) standing nextto the specific ball throwing machine.

Similarly, in another example, there is predicted 33 a certain positionof the player when the player waits to be served a ball, say by theposition predictor 13. Consequently, the image of the virtual opponentserving a ball is projected in front of a ball throwing machine selectedbased on the predicted position, and instructed to throw a ball (say bythe generated 34 control command), for a few seconds before the ballthrowing machine actually throws the ball.

Optionally, a user (say coach) is allowed to remotely control thepointer, for pointing a simulated movement of a virtual opponent to theplayer, say by projecting and moving an image of the virtual opponentaround the court, thus allowing the user to manually intervene in atraining session of the player. For example, by moving the image aroundthe court, the user may encourage the player to exercise certain playstyles, say a net play, etc.

Optionally, the control commands are generated 34 based on the positionpointed by the user, say by moving the image to a specific position. Forexample, the control command generator 14 may generate a control commandwhich instructs one of the ball throwing machines, to throw a ball in adirection, spin, and velocity, which are likely to send the ball into atrajectory which passes exactly over the position pointed by the user.

Optionally, the generation 34 of the control command is further based onmotion of another player preselected as an opponent to the player and ofa ball used by the other player, as tracked in a location remote fromthe ball throwing machine, during the training.

For example, a second system similar to the first system 100, whichincludes components similar to the component 11-14 of the first system,may be installed at a remote tennis court in use by the other tennisplayer.

In the example, the second system communicates tracking data generatedby the second system's component similar to the 3D motion tracker 12 ofthe first system 100, from tracking the motion of the other player andthe ball in use by the other player, to the control command generator 14of the first system, in real time or near real time.

Consequently, the generation 34 of the control command may be furtherbased on the tracking data communicated by the second system in realtime or near real time.

Optionally, the generation 34 of the control command is further based onmotion of an avatar in a video game or a video game like GUI, as used bya user of the video game or GUI, during the training, as described infurther detail hereinbelow.

For example, a tennis computer game may be played by a user remote frontthe computer of the present method, on a web server, say using aninternet web browser installed on the remote user's computer (say atablet computer or a cellular phone) as described in further detailhereinabove.

The computer game of the example may be implemented using a dedicatedcomputer program, which runs on a web server and allows the user tocontrol an avatar of a tennis player who plays against a second avatar,in the computer game.

In the example, the motion of the avatar, controlled by the user duringthe game, is tracked by the computer program, and communicated to thecomputer (say to the control command generator 14 the system 100) inreal time, say in a data file, as described in further detailhereinabove.

Consequently, the generation 34 of the control command may be furtherbased on the tracking data communicated by the computer program in thedata file.

Thus, in one example, the player's coach may use the computer game, toremotely intervene in the training session, and guide the player throughthe training session, say from the coach's home.

Optionally, in the method, there is further generated video game contentbased on the tracking 32, predicting 33, or both tracking 32 andpredicting 33, say by the video game content generator, as described infurther detail hereinabove.

In a first example, the video game content is generated by the positionpredictor 13 and the computer program which implements the computergame, as described in further detail hereinabove.

In the first example, the position predictor 13 communicates thepredicted 33 player's position and ball's trajectory to the programwhich implements the computer game. The computer program in turn, movesthe second avatar in a motion based at least partially, on the predicted33 player's position and ball's trajectory.

In a second example, during the training session, the player's motionand ball's motion are tracked 32, say by the 3D motion tracker 12. Thetracked 32 motions and positions from which the ball is thrown at theplayer, per the generated 34 control commands, are recorded in adatabase, say by the 3D motion tracker 12. Consequently, after thetraining session, the program which implements the computer game,generates game content which graphically presents the tracked 32motions, in the computer game, using the database.

Optionally, the generation 34 of the control command is further based onvoice commands given by the player, picked by microphones, andrecognized using a voice recognition component implemented on thecomputer, as described in further detail hereinabove. The voice commandsmay include, but are not limited to commands such as: “Start session”,“Stop session”, “Start drill number seven”, “Start drill pattern ofbeginners level”, etc., or any combination thereof.

Optionally, the method further includes using tracking data pertainingto the ball, for identifying if after being hit by the player, the ballhits a predefined position, say a position pointed to the player by theplayer's coach, using a light source, as described in further detailhereinabove.

Optionally, the method further includes controlling one or more PTZcameras based on the tracked 32 motions of the player and ball, on thepredicted 33 player's position and ball's trajectory, or on both, say bycamera controller, as described in further detail hereinabove. Thecontrolling may be carried out by generating 34 control commands forpitching, yawing, zooming (say for better analysis of the tracked 32motions, after a training session), etc., as described in further detailhereinbelow.

Optionally, the controlling of the one or more PTZ cameras, based on thetracked 32 motions, is carried out using VMD (Video Motion Detection)Methods and Devices, which are applied, for example, for following theplayer with the PTZ camera, as known in the art.

Optionally, the tracked 32 motions are logged during a training sessionin a database, say by the logger, as described in further detailhereinabove. Consequently, the logged motions may be used for presentingtracked 32 motions of the player and ball on a computer screen, thusallowing the user to analyze the player's performance, say by thebriefing module, as described in further detail hereinabove.

Optionally, there are further logged or recorded on a database, thereceived 31 image data (or parts thereof), voice commands given by theplayer and picked by microphones, geographical information gatheredbased on the tracking 32, on GPS (or Differential GPS) device reading,or on user input, etc., —say by the logger, as described in furtherdetail hereinabove.

Optionally, in the method, there are further generated workoutstatistics, video and/or audio recordings, speed analysis of the tracked32 motions of the player and ball, mileage analysis of the player'stracked 32 motion, a counting of predefined events (say a tennis out,net, or ace event, a football touchdown event), etc.).

Optionally, the method further includes one or more steps ofbio-mechanical analysis, technical analysis, tactical analysis, anotherform of analysis, or any combination thereof, on the motions of theplayer and ball, through known in art analysis techniques.

Reference is now made to FIG. 4, which is a simplified flowchartillustrating a second method for ball game training, according to anexemplary embodiment of the present invention.

A second exemplary method, according to an exemplary embodiment of thepresent invention, is executed by a computer in communication with twoor more cameras and one or more ball throwing machine, deployed inconstrained environment (say of a tennis court), as described in furtherdetail hereinabove.

In an initial phase of the second exemplary method, the cameras arecalibrated 41 by the computer, say by identifying the court's whiteboundary lines or a part thereof, using image data captured by thecameras), as described in further detail hereinabove.

Later, when a training session of a player starts, the cameras a say byan operator or automatically (say using VMD methods) and start 42capturing image data (say video streams) of the constrained environment(say the court and the court's surrounding).

During the training session, the cameras continuously capture 43 imagedata of the constrained environment, in which image data, the cameraalso capture motions of the player, the ball, and optionally, of theball machine too, and the captured 43 image data is transmitted to thecomputer.

On the computer, the captured 43 image data is used to dynamically map44 locations of the player, ball, and/or machine in three dimensions, asdescribed in further detail hereinabove.

Optionally, for dynamically mapping 44 the locations in threedimensions, there is generated a three dimensional (3D) space model ofthe constrained environment in which the training of the player takesplace. The 3D space model maps the constrained environment of a tenniscourt in use by the player, in three geographic coordinates, asdescribed in further detail hereinabove.

In one example, the 3D space model is generated through stereoscopicanalysis of video streams captured 43 simultaneously by the cameras, asknown in the art. With the stereoscopic analysis of the video streams,pixel values in images captured 43 simultaneously, may be translated 44into 3D coordinate data on location of the player, the ball, andoptionally, the ball throwing machine too.

Based on the dynamically mapped 44 locations, there are tracked 45 themotions of the ball, player, and optionally, the ball throwing machinetoo,

Based on the tracked 45 motion of the player, the computer calculatesthe player's motion's direction and speed, and predicts 46 the player'sexpected position in a few seconds time, say at the end of the next playact. The prediction 46 may be based on parameters which may include, butare not limited to: the player's calculated direction and speed,previous information on player (say a preference for positions near thenet), etc., as described in further detail hereinabove.

Based on the tracked 45 motion of the ball, the computer calculates theball's direction and speed, and predicts 46 the ball's trajectory(potentially including the ball's expected touch point with the ground).

Next, the computer simulates 47 a behavior of a virtual opponent, whichbehavior is responsive to the predictions 46, The simulated behavior mayinclude, for example, an expected position which the virtual opponent islikely to run into, in an attempt to hit back the ball, an expecteddirection, velocity and spin of the ball, resultant upon being hit back,etc., as described in further detail hereinabove.

The simulated behavior of the virtual opponent player may depend on avariety of parameters. The parameters may include, but are not limitedto: training programs made of predefined drill patterns, history datagathered on the player who trains on the court (say the player'sofficial tennis ranking), history data gathered on the virtual player,etc., as described in further detail hereinabove.

Next, the computer uses the simulated behavior, for calculating 48 theball throwing parameters.

The ball throwing parameters may include, but are not limited to: whichmachine among two or more ball throwing machines deployed at differentpositions, to use for the throwing, a direction, velocity and spin forthe machine to throwing a ball with, etc., as described in furtherdetail hereinabove.

Then, based on the calculated 48 ball throwing parameters, the computergenerates 49 a control command based on the calculating 48 parameters,and sends the generated 49 control command to the ball throwing machine,as described in further detail hereinabove.

Reference is now made to FIG. 5, which is a block diagram schematicallyillustrating an exemplary computer readable medium storing computerexecutable instructions for performing steps of ball game training,according to an exemplary embodiment of the present invention.

According to an exemplary embodiment of the present invention, there isprovided a non-transitory computer readable medium 500, such as aCD-ROM, a USB-Memory, a Hard Disk Drive (HDD), a Solid State Drive(SSD), etc.

The computer readable medium 500 stores computer executableinstructions, for performing steps of ball game training. Theinstructions may be executed upon one or more computers.

In one example, for execution of the instructions by a computer, thecomputer communicates with two or more cameras, and one or more ballthrowing machines, say through an intranet network, a local areanetwork, another network, or any combination thereof, as described infurther detail hereinabove.

The computer executable, instructions include a step of receiving 51image data of the player and ball, in real time or in near real time.The image data (say video streams) is captured live by the cameras, inreal time or in near real time, during a training session, as describedin further detail hereinabove.

The computer executable instructions further include a step of tracking52 motion of the player and motion of the ball, in three dimensions(3D), using the received 51 image data, as described in further detailhereinabove.

Optionally, there are further tracked 52 motions of one or more of theball throwing machines, using the received 51 image data, say in a sameway as used for tracking 52 the motions of the player and ball, asdescribed in further detail hereinbelow.

Optionally, the tracking 52 of the machines' motions is, additionally oralternatively, based on location information generated by GPS (GlobalPositioning System) receivers or Differential GPS receivers, installedon the ball throwing machines, and communicated (say wirelessly) to thecomputer which executes the instructions, as known in the art.

Optionally, for tracking 52 the player's motion of and the ball'smotion, in three dimensions, there is generated a three dimensional (3D)space model of a constrained environment in which the training of theplayer takes place, say of the constrained environment of a tennis courtin use by the player during the training session.

In one example, the 3D space model is generated through stereoscopicanalysis of video streams received 51 simultaneously from the two ormore cameras, or through any other, known in the art 3D modelingtechnique.

In the example, the two (or more) cameras continuously capture images ofthe constrained environment (i.e. of the court, player, ball, andsurroundings) in image data—say as video streams, and feed 51 the imagedata to the computer which executes the instructions.

Based on the continuous feed 51 of the video streams, the 3D space modelis updated, and the thus dynamically updated 3D space model, is used totrack 52 the motions of the player and ball.

Thus, in one example, there are tracked 52 a round or oval image of theball and a round or oval image of player' head in the 3D space modelbased on the image data received 51 simultaneously from the two or morecameras. During each session of training the player, each round or ovalimage's location is kept track 52 of. Typically, the round or oval imageof the ball differs from the round or oval image of the player, in sizeor shape.

In one example, the motions are tracked 52 from images of the tennisplayer, captured as the player runs on a tennis court towards a ballthrown by one of the ball throwing machines, and hits the ball with atennis racket—as captured in the received 51 image data.

Thus, for example, when the player runs to hit a ball thrown by the ballthrowing machine, the tracked 52 motions may cover the motion of theplayer before, during, and after the player's hitting of the ball, aswell as the ball's motion before and after being hit, as described infurther detail hereinabove.

The computer executable instructions further include a step ofpredicting 53 a position of the player and a trajectory of the ballbased on the tracked 52 motions, as described in further detailhereinabove.

Optionally, the position of the player and the trajectory of the ballare predicted 53 based on one or more parameters. The parameters mayinclude, but are not limited, to: velocity and direction of the ball andof the player, the ball's spin, sport (say tennis) rules, automaticidentification of certain events based on sport rules, wind conditions,historic data gathered on the player, etc., or any combination thereof.

For example, based on the tracked 52 motions of the player and ball,there may be predicted 53 a tennis player's position two seconds afterthe player hits the ball, and the ball's trajectory over a tenniscourt's half opposite the player (i.e. the court's part which would beused by a real opponent), after the player hits the ball.

For predicting 53 the player's position, there may also be taken intoconsideration historic data gathered on the tennis player, saystatistical data gathered through previous training sessions of theplayer. In one example, the statistical data indicates the player'spreferences over different areas of the tennis court, say a preferencefor areas near the court's corners, as described in further detailhereinabove.

The computer executable instructions further include a step ofgenerating 54 a control command for one or more ball throwing machines,based on the predicted 53 player's position and ball's trajectory, asdescribed in further detail hereinabove.

The control command instructs the ball throwing machine, to throw theball in a way (say with initial velocity, direction, and spin), time,etc., which depend on the predicted 53 position and trajectory, asdescribed in further detail hereinabove.

In a first example, the way for throwing the ball is calculated, suchthat the ball's trajectory expected when the ball is thrown that way,extends from the ball throwing machine into an area near the net, justopposite the predicted 53 position of the player. Then, the calculatedway (say the initial velocity and direction to be given to the ball whenbeing thrown) is specified in the generated 54 control command.

Optionally, the location of the ball throwing machine is also taken intoconsideration, for calculating the way for throwing the ball, say usinglocation data based on a tracking 52 of the ball throwing machine'slocation, as described in further detail hereinabove.

Optionally, the computer executable instructions further include stepsof the allowing the player (or another user—say the player's coach) toselect a virtual opponent (say a famous tennis player or simply, anotherplayer), as described in further detail hereinabove.

Consequently, the generated 54 control command may instruct the machineto throw the ball in a way in which the virtual opponent is likely tohit a ball having the predicted 53 trajectory, when facing an opponenthaving the position predicted 53 for the player on the court.

Optionally, the way for throwing the ball is calculated based onhistoric data previously gathered on the virtual opponent (say thefamous player), as described in further detail hereinabove.

Thus, in one example, the velocity, direction, or spin of ball iscalculated based on past performance by the famous player when hitting aball with a parabolic trajectory similar to the ball's predicted 53trajectory (say a trajectory which extends into a distance of not morethan one meter away from the net).

For example, when Bjorn Borg is selected as a virtual opponent, theremay be calculated a spin which when being applied to the thrown ball,the ball flies in a way which resembles the way Bjorn Borg would hitback a ball served with a trajectory similar to the predicted 53trajectory, say with Topspin.

Indeed, Topspin is typical of Bjorn Borg's play when hitting back a ballnear the net. Topspin is a ball's spin with which the ball rotatesforwards as it moves. Topspin on a ball propelled through the airimparts a downward force that causes the ball to drop, due to the ball'sinteraction with the air.

Optionally, the control command is generated 54 further based on onemore drill patterns predefined by a user (say the player's coach, anoperator, programmer or administrator of the computer, etc.), asdescribed in further detail hereinabove.

For example, the computer executable instructions may further include astep of allowing the user to use a GUI (Graphical User interface) madeof one or more menu pages, for defining one or more drills patterns inwhich a tennis player's net game is improved, by forcing the player tohit the ball from areas close to the net.

The computer executable instructions may further include a step ofallowing a user (say a player or coach) to choose a drill patternamongst the predefined drill patterns. Alternatively, the computerexecutable instructions may include a step of preselecting the drillpattern amongst the predefined drill patterns, automatically, for theplayer, say on a random basis.

Consequently, when a user chooses the predefined drill pattern, sayusing one of the GUI menu pages, the generated 54 control commandinstructs the ball throwing machine to throw the ball in a way whichsends the ball into a trajectory which ends close to the net, on theplayer's court half, as described in further detail hereinabove.

Optionally, after the user chooses the predefined drill patterns (orrather after the drill pattern is preselected automatically), eachcontrol command is generated 54 based on the same selected drillpattern, until a goal predefined by a user is achieved by the player.

Thus, in one example, the computer executable instruction furtherinclude a step of verifying that the player has managed to achieve apredefined goal—say one of hitting the ball near the net for twentytimes in a row, say using motion tracking 52 data, as described infurther detail hereinabove.

Optionally, the tracking 52, predicting 53, or both, are further basedon pattern analysis and what-if simulation, as described in furtherdetail hereinabove.

Optionally, the computer executable instructions further include a stepof selecting a ball throwing machine among two (or more) ball throwingmachines deployed at different positions (say at different positions onthe tennis court), as a destination for the generated 54 controlcommand, as described in further detail hereinabove.

Consequently, the computer executable instructions further include astep of sending of the generated 54 control command, to the selectedmachine, as described in further detail hereinabove.

Optionally, the selection of the ball throwing machine is based on thepredicted 53 player's position and ball's trajectory, on the positionsof the ball throwing machines, or on both.

Optionally, the selection of the ball throwing machine is further basedon location data generated when tracking 52 the motions of one or moreof the ball throwing machines, as described in further detailhereinabove.

Optionally, the selection of the ball throwing machine is additionallyor alternatively, based on historic data gathered on the famous player.

In one example, for the selection, there is further used historicstatistical data previously input, say by an administrator or operatorof the computer. In the example, the historic statistical data indicatesthat the famous player has a preference for tennis net play, or ratherthat the famous player has a tendency to hit back a ball from specificareas of the court, as described in further detail hereinabove.

Optionally, the ball throwing machine is movable around the court, sayon a rail on which the machine is movably mounted or simply on wheels,using an engine of the machine.

Consequently, the computer executable instructions may further include astep of generating 54 a control command for the machine to move over, toa destined position selected based on the predicted 53 position andtrajectory, as described in further detail hereinabove.

Optionally, the ball throwing machine further has a mechanical arm,movable by an engine installed on the machine, for hitting a ball (say amechanical arm shaped like or connected to a tennis racket).Consequently, the computer executable instructions may further include astep of generating 54 a control command for the machine to hit the ballhaving the predicted 53 trajectory, with the mechanical arm, asdescribed in further detail hereinabove.

Optionally, the computer executable instructions further include a stepof calibration, as described in further detail hereinabove.

The calibration may include, for example, identifying location of apredefined object present in an area used for the training—say of one ormore border lines of a tennis court, in the received 51 image data.

Optionally, for carrying out the calibration, the court as captured bythe cameras in the image data is divided into a grid representative ofthe court's layout, and each junction in the grid is checked for adeviation from the grid.

For example, the calibration may include using the tennis court'sboundary parts, as captured in the received 51 image data, forestimating all boundary lines of the court, dividing the court, ascaptured in the image data, with a grid representative of the boundarylines of the whole court, and detecting areas out of those boundaries.

Optionally, the calibration further includes automatically issuingcontrol commands to a controller (say a dedicated computer) connected tothe cameras, to re-align the cameras' direction, tilt angle, etc., saybased on identified location of the object, as described in furtherdetail hereinabove. Preferably, the deviation from the grid is detectedin real (or near real) time, and the control commands are issuedpromptly after the detection, thus improving the quality of the received51 image data, during a training session of the player.

Optionally, the calibration further includes updating the 3D space modelof the constrained environment (say the tennis court), say by removingparts which are outside the court and are thus not relevant for tracking52, form the 3D model, or by changing the 3D space model's orientation,as described in further detail hereinabove.

Thus, based on the identified location of the predefined object (say aborderline of the tennis court) in the image data, there may be improvedthe tracking 52 of the motions, the capturing of the image data by thecameras, or both the tracking 52 and the capturing, as described infurther detail hereinabove.

Optionally, the computer executable instruction further include a stepof pointing a position to the player, say using one or more lightsources (say a laser beam projector) or using a computing devicewearable, by the player (say an eyewear or a smart helmet), as describedin further detail hereinabove.

In one example, there are used one or more light sources. In theexample, each one of the light sources is installed on a respectiveposition of the court, is connected to the computer, and is controlleddirectly from the computer, as described in further detail hereinabove.

In another example, each one of the light sources is installed on arespective one of the ball throwing machines, and control commandsgenerated 54 on the computer are sent to the ball throwing machine, forpointing the simulated position, using the light source, as described infurther detail hereinabove.

Optionally, the position is pointed to the player, using the lightsources (say laser beam light sources), by projecting an image.Optionally, the image is a real (i.e. three dimensional) hologram of thefamous player, or rather a two dimensional image of the famous player,in which case the position may be a simulated position of the virtualopponent, thus pointed to the player.

Optionally, the projection of the real hologram involves one ofcurrently used techniques for projecting real (i.e. three dimensional)holograms or two dimensional images.

Thus, in one example, when the player hits the ball with a trajectorypredicted 53 to extend towards a point close to a specific one ofseveral ball throwing machines deployed on the court, there is projectedin image of the virtual opponent (say of Novak Djokovic) standing nextto the specific ball throwing machine.

Similarly, in another example, there is predicted 53 a certain positionof the player when the player waits to be served a ball. Consequently,an image of the virtual opponent serving a ball is projected in front ofa ball throwing machine instructed to throw a ball by the generated 54control command, for a few seconds, before the ball throwing machineactually throws the ball.

Optionally, the computer executable instructions further include a stepof allowing a user (say the player's coach) to point a simulatedposition of a virtual opponent to the player, say by projecting andmoving an image of the virtual opponent around the court, thus allowingthe user to manually intervene in a training session of the player.

Thus, for example, by moving the virtual opponent's (say famous actor)image around the court, the user (say coach) may encourage the player toexercise certain play styles, say a net play, etc.

Optionally, the control commands are generated 54 based on the positionpointed by the user (say by moving the projected image to a specificposition). Thus in one example, there is generated 54 a control commandwhich instructs a ball throwing machine, to throw a ball in a direction,spin, and velocity, which are likely to send the ball into a trajectorywhich passes exactly over the position pointed by the user.

Optionally, the generation 54 of the control command is further based onmotion of another player preselected as an opponent to the player and aball used by the other player, as tracked in a location remote from theball throwing machine, during the training, as described in furtherdetail hereinabove.

Optionally, the generation 34 of the control command is further based onmotion of an avatar in a video game, as used by a user of the video gameduring the training, as described in further detail hereinabove.

For example, a tennis computer game may be played by a user remote fromthe computer which executes the instructions, on a web server, say usingan internet web browser installed on the remote user's computer, asdescribed in further detail hereinabove.

The computer game of the example may be implemented using a dedicatedcomputer program, which runs on a web server and allows the user tocontrol an avatar of a tennis player who plays against a second avatar,in the computer game. The motion of first avatar, controlled by the userduring the game, may be tracked by the computer program, andcommunicated to the computer which executes the instructions, in realtime, say in a data file, as described in further detail hereinabove.

Consequently, the generation 54 of the control command may be furtherbased on the tracking data communicated by the computer program in thedata file, as described in further detail hereinabove.

Optionally, the computer executable instructions further include a stepof generating video game content based on the tracking 52, predicting53, or both, as described in further detail hereinabove.

In one example, the computer executable instructions further include astep of communicating the predicted 53 player's position and ball'strajectory to the program which implements the computer game on the webserver. The computer program in turn, moves the second avatar in amotion based at least partially, on the predicted 53 player's positionand ball's trajectory.

Optionally, the computer executable instructions further include a stepof receiving voice commands from the player, using microphones, duringthe training session, and recognizing the voice commands using voicerecognition techniques, as known in the art. Consequently, thegeneration 54 of the control command is further based on the receivedand recognized voice commands. The commands may include commands suchas: “Start session”, “stop session”, “start drill number seven”, “Startdrill pattern of beginners level”, etc., or any combination thereof.

Optionally, the computer executable instructions further include a stepof using tracking 52 data pertaining to the ball, for identifying ifafter being hit by the player, the ball hits a predefined position, saya position pointed to the player by the player's coach, using a lightsource, as described in further detail hereinabove.

Optionally, the computer executable instructions further include a stepof controlling one or more PTZ cameras based on the motions of theplayer and ball as tracked 52, on the player's position and ball'strajectory as predicted 53, or on both, as described in further detailhereinabove.

Optionally, the computer executable instructions further include one ormore steps of out bio-mechanical analysis, technical analysis, tacticalanalysis, another form of analysis, or any combination thereof, on thetracked 52 motions of the player and ball, through known in art analysistechniques, as described in further detail hereinabove.

It is expected that during the life of this patent many relevant devicesand systems will be developed and the scope of the terms herein, andparticularly of the terms “Computer”, “CD-ROM”, “USB-Memory”, “Hard DiskDrive (HDD)” “Solid State Drive (SSD)”, “Camera”, “PTZ Camera”, “Ballthrowing machine”, “Laser”, “Light Source”, “Hologram”, “Projector”,“Network”, “Speaker”, “Microphone”, “Tablet”, and “Smart Phone”, isintended to include all such new technologies a priori.

It is appreciated that certain features of the invention, which are, forclarity, described in the context of separate embodiments, may also beprovided in combination in a single embodiment. Conversely, variousfeatures of the invention, which are, for brevity, described in thecontext of a single embodiment, may also be provided separately or inany suitable subcombination.

Although the invention has been described in conjunction with specificembodiments thereof, it is evident that many alternatives, modificationsand variations will be apparent to those skilled in the art.Accordingly, it is intended to embrace all such alternatives,modifications and variations that fall within the spirit and broad scopeof the appended claims.

All publications, patents and patent applications mentioned in thisspecification are herein incorporated in their entirety by referenceinto the specification, to the same extent as if each individualpublication, patent or patent application was specifically andindividually indicated to be incorporated herein by reference. Inaddition, citation or identification of any reference in thisapplication shall not be construed as an admission that such referenceis available as prior art to the present invention.

The invention claimed is:
 1. A method for ball game training, the methodcomprising steps executed by at least one computer, the stepscomprising: receiving image data of a first player and a ball; using thereceived image data, tracking motion of the first player and motion ofthe ball in three dimensions; based on the tracked motions, predicting afirst position of the first player and a trajectory of the ball; andbased on the predicted first position and trajectory, generating acontrol command for at least one ball throwing machine.
 2. The method ofclaim 1, wherein said generating further comprises specifying a way ofball throwing by at least one of the at least one ball throwing machine,in the control command.
 3. The method of claim 1, wherein at least oneof said predicting of the first position of the first player and saidpredicting of the trajectory of the ball is further based on historicdata gathered on the first player.
 4. The method of claim 1, whereinsaid generating is further based on historic data gathered on a secondplayer preselected as a virtual opponent for the first player.
 5. Themethod of claim 1, wherein said generating of the control command andsubsequent generating of at least one later control command are furtherbased on a same predefined drill pattern, until a predefined goal isachieved by the player.
 6. The method of claim 1, further comprisingselecting one of at least two ball throwing machines deployed atdifferent positions, as a destination for the generated control command,based on the predicted position of the first player and trajectory ofthe ball and on the positions of the machines.
 7. The method of claim 1,wherein said generating further comprises generating a second controlcommand, the second control command instructing at least one of the atleast one ball throwing machine to move over, to a destined position,based on the predicted position, on the predicted trajectory, or on boththe predicted position and the predicted trajectory.
 8. The method ofclaim 1, wherein said generated control command instructs the ballthrowing machine to hit the ball having the predicted trajectory, with amechanical arm.
 9. The method of claim 1, further comprising identifyinga location of a predefined object in the received image data, wherein atleast one of said tracking of the motions and a capturing of the imagedata by a camera is based on the identified location of the predefinedobject.
 10. The method of claim 1, further comprising pointing asimulated position of a virtual opponent to the first player, using atleast one light source.
 11. The method of claim 1, further comprisingpointing a simulated position of a virtual opponent to the first player,by projecting an image of the virtual player.
 12. The method of claim 1,further comprising pointing a second position to the first player, usingat least one light source.
 13. The method of claim 1, further comprisingpointing a second position to the first player, using a display of awearable computing device.
 14. The method of claim 1, further comprisingallowing a user to point a position, using at least one light source,wherein said generating of the control command is further based on thepointed position.
 15. The method of claim 1, wherein said generating ofthe control command, is further based on motion of a second playerpreselected as an opponent to the first player, as tracked in a locationremote from the at least one ball throwing machine.
 16. The method ofclaim 1, wherein said generating of the control command, is furtherbased on motion of an avatar in a video game, as used by a user of thevideo game.
 17. The method of claim 1, further comprising generatingvideo game content based on at least one of said tracking andpredicting.
 18. The method of claim 1, further comprising identifying ifafter being hit by the first player, the ball hits a predefinedposition.
 19. A system for ball game training, the system comprising: acomputer; an image data receiver, implemented on said computer,configured to receive image data of a player and a ball; a threedimensional motion tracker, in communication with said image datareceive, configured to track motion of the player and motion of the ballin three dimensions, using the received image data; a positionpredictor, in communication with said three dimensional motion tracker,configured to predict a position of the player and a trajectory of theball based on the tracked motions; and a control command generator, incommunication with said position predictor, configured to generate acontrol command for at least one ball throwing machine based on thepredicted position and trajectory.
 20. A non-transitory computerreadable medium storing computer executable instructions for performingsteps of ball game training, the steps comprising: receiving image dataof a player and a ball; using the received image data, tracking motionof the player and motion of the ball in three dimensions; based on thetracked motions, predicting a position of the player and a trajectory ofthe ball; and based on the predicted position and trajectory, generatinga control command for at least one ball throwing machine.